package task;

/**
 * Creared with IntelliJ IDEA.
 * Description:线程安全的单例模式(懒汉模式)
 * User:yxd
 * Date:2022-03-29
 * Time:9:20
 */
class MySingleton{
    //创建实例但不着急初始化
    private static volatile MySingleton instance = null;//要保证双层循环的内层可见性
    //改变构造方法为私有的
    private MySingleton(){}
    //提供具体的方法获得实例
    public static MySingleton getInstance(){
        if(instance == null){//判断是否需要加锁
            synchronized (MySingleton.class){//加锁保证原子性
                if(instance == null){//判断时候需要实例化
                    instance = new MySingleton();
                }

            }
        }
        return instance;
    }
}
public class Practice_1 {
    public static void main(String[] args) {
        MySingleton singleton = MySingleton.getInstance();
    }
}
